package com.xdf.wxbebarrel.controller;

import com.xdf.wxbebarrel.utils.JsonResult;
import com.xdf.wxbebarrel.utils.WechatUtils;
import com.xdf.wxbebarrel.utils.WxQrcodeUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.io.IOException;
import java.util.Map;
import java.util.Optional;

@CrossOrigin
@RestController
@RequestMapping("/qr")
public class QrController {
    @Autowired
    private WechatUtils utils;
    @Autowired
    private WxQrcodeUtils qrcodeUtils;

    @GetMapping("/tsqr")
    public JsonResult tsQr() throws IOException {
        return JsonResult.ok(qrcodeUtils.getQRCodeTemporary("请求二维码专用工具"));
    }

    @GetMapping("/test")
    public JsonResult test(){
        return JsonResult.ok("ok");
    }

    // 返回 PAD 设备用于登录的二维码，VB6端传递来GUID
    @GetMapping("/padlogin/{scene}")
    public JsonResult getPADQR(@PathVariable String scene) throws IOException {
        String ret = utils.getQRCodeTemporary(scene);
        return JsonResult.ok(ret);
    }

    // 返回 browser 设备用于登录的二维码，浏览器发送来UUID
    @GetMapping("/browserlogin/{scene}")
    public JsonResult getBrowserQR(@PathVariable String scene) throws IOException {
        return JsonResult.ok(utils.getQRCodeTemporary(scene));
    }

    // 考虑到以后有可能多个项目都要依赖微信服务号的后台程序
    // 原本设计所有后续可能的项目都使用本接口
    // 后台调整思路为不同的项目使用不同的接口
    @PostMapping("/browserlogin")
    public JsonResult getBrowserQRPost(@RequestBody Map<String,String> params) throws IOException {
        String scene = Optional.ofNullable(params.get("scene")).orElse("");
        return JsonResult.ok(utils.getQRCodeTemporary(scene));
    }
}
